虽然是一键配置,但还是需要若干步骤的。

参考:

ROS1云课→18一键配置

蓝桥ROS之f1tenth案例学习与调试(成功)

蓝桥ROS之f1tenth简单PID沿墙跑起来(Python)


一键升级脚本,直接配置好f1tenth并启动:

echo "Upgrade Mission Begins."echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.ascsudo apt-key add ros.ascsudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'git clone https://gitcode.net/ZhangRelay/f1tenth.gitmkdir -p ~/f1tenth/srccd ~/f1tenth/srcunzip ~/f1tenth/f1tenth_simulator.zipsudo rm /etc/apt/sources.list.d/ros2-latest.listsudo apt updatesudo apt install ros-kinetic-tf2-geometry-msgs ros-kinetic-ackermann-msgs ros-kinetic-joy ros-kinetic-map-server ros-kinetic-message-runtime -ysudo apt upgrade -ycd ~/f1tenthcatkin_makesource ~/f1tenth/devel/setup.zshroslaunch f1tenth_simulator simulator.launchecho "Upgrade Mission Completed."

完成后:

效果如下:

PID的算法:

#!/usr/bin/env python
from __future__ import print_function
import sys
import math
import numpy as np#ROS Imports
import rospy
from sensor_msgs.msg import Image, LaserScan
from ackermann_msgs.msg import AckermannDriveStamped, AckermannDrive#PID CONTROL PARAMS
kp = 1.0
kd = 0.001
ki = 0.005
servo_offset = 0.0
prev_error = 0.0
error = 0.0
integral = 0.0
prev_time = 0.0#WALL FOLLOW PARAMS
ANGLE_RANGE = 270 # Hokuyo 10LX has 270 degrees scan
DESIRED_DISTANCE_RIGHT = 0.9 # meters
DESIRED_DISTANCE_LEFT = 0.85
VELOCITY = 1.5 # meters per second
CAR_LENGTH = 1.0 # Traxxas Rally is 20 inches or 0.5 metersclass WallFollow:""" Implement Wall Following on the car"""def __init__(self):global prev_time#Topics & Subs, Pubslidarscan_topic = '/scan'drive_topic = '/nav'prev_time = rospy.get_time()self.lidar_sub = rospy.Subscriber(lidarscan_topic, LaserScan, self.lidar_callback)self.drive_pub = rospy.Publisher(drive_topic, AckermannDriveStamped, queue_size = 10)def getRange(self, data, angle):# data: single message from topic /scan# angle: between -45 to 225 degrees, where 0 degrees is directly to the right# Outputs length in meters to object with angle in lidar scan field of view#make sure to take care of nans etc.#TODO: implementif angle >= -45 and angle <= 225:iterator = len(data) * (angle + 90) / 360if not np.isnan(data[int(iterator)]) and not np.isinf(data[int(iterator)]):return data[int(iterator)]def pid_control(self, error, velocity):global integralglobal prev_errorglobal kpglobal kiglobal kdglobal prev_timeangle = 0.0current_time = rospy.get_time()del_time = current_time - prev_time#TODO: Use kp, ki & kd to implement a PID controller for integral += prev_error * del_timeangle = kp * error + ki * integral + kd * (error - prev_error) / del_timeprev_error = errorprev_time = current_timedrive_msg = AckermannDriveStamped()drive_msg.header.stamp = rospy.Time.now()drive_msg.header.frame_id = "laser"drive_msg.drive.steering_angle = -angleif abs(angle) > math.radians(0) and abs(angle) <= math.radians(10):drive_msg.drive.speed = velocityelif abs(angle) > math.radians(10) and abs (angle) <= math.radians(20):drive_msg.drive.speed = 1.0else:drive_msg.drive.speed = 0.5self.drive_pub.publish(drive_msg)def followLeft(self, data, leftDist):#Follow left wall as per the algorithm #TODO:implementfront_scan_angle = 125back_scan_angle = 180teta = math.radians(abs(front_scan_angle - back_scan_angle))front_scan_dist = self.getRange(data, front_scan_angle)back_scan_dist = self.getRange(data, back_scan_angle)alpha = math.atan2(front_scan_dist * math.cos(teta) - back_scan_dist, front_scan_dist * math.sin(teta))wall_dist = back_scan_dist * math.cos(alpha)ahead_wall_dist = wall_dist + CAR_LENGTH * math.sin(alpha)return leftDist - ahead_wall_distdef lidar_callback(self, data):""" """error = self.followLeft(data.ranges, DESIRED_DISTANCE_LEFT) #TODO: replace with error returned by followLeft#send error to pid_controlself.pid_control(error, VELOCITY)def main(args):rospy.init_node("WallFollow_node", anonymous=True)wf = WallFollow()rospy.sleep(0.1)rospy.spin()if __name__=='__main__':main(sys.argv)


差速巡线参考:

蓝桥ROS-差速巡线机器人设计-良好(80+)的报告-复现

前轮转向移动机器人方向参考:

1. 实验目的

前轮转向移动机器人的实验目的是为了让学生了解和掌握前轮转向移动机器人的基本原理和控制方法,以及学习机器人运动学方面的知识。此外,该实验还可以培养学生的动手能力和团队合作精神,提高学生的实验操作能力和实验设计能力。

具体来说,前轮转向移动机器人的实验目的可以分为以下几个方面:

  1. 了解前轮转向移动机器人的基本结构和工作原理。学生需要了解机器人的各个部件及其功能,包括前轮转向系统、电机控制系统、传感器系统等。

  2. 掌握机器人的运动学原理和控制方法。学生需要了解机器人的运动学模型,包括机器人的位置、速度和加速度等基本参数,以及控制机器人的运动轨迹和速度等。

  3. 学习机器人的编程和控制技术。学生需要学习机器人的编程语言和控制算法,包括PID控制算法、路径规划算法等,以便能够对机器人进行控制和调试。

  4. 培养学生的实验操作能力和实验设计能力。学生需要亲自进行机器人的组装、调试和测试等操作,同时还需要设计和实现机器人的控制程序和算法,以培养他们的实验操作能力和实验设计能力。

  5. 提高学生的创新意识和团队合作精神。学生需要在实验中积极思考和创新,同时还需要与同学一起合作完成实验,以提高他们的创新意识和团队合作精神。

2. 实验意义或者动机

前轮转向移动机器人的实验意义或动机有以下几个方面:

  1. 探索机器人移动的新方式:前轮转向移动机器人的移动方式相对于传统的轮式机器人具有一定的优势,可以在狭窄的空间内灵活移动,同时在机器人需要进行精细调整时也比较方便。

  2. 研究移动机器人的控制方法:前轮转向移动机器人需要通过控制前轮的转向角度来实现移动,因此需要研究相应的控制方法。这可以为其他类型的移动机器人的控制提供参考。

  3. 应用于特定场景:前轮转向移动机器人在一些特定的场景中可以发挥很好的作用,比如在仓库内进行物品搬运、在医院内进行药品送达等。

  4. 提高人机交互的便利性:前轮转向移动机器人可以通过通过传感器和相应的控制系统来实现对环境的感知和响应,从而提高人机交互的便利性。比如,在酒店或机场内作为导航机器人,可以帮助用户更加方便地找到目的地。

3. 实验步骤

以下是前轮转向移动机器人实验步骤的详细讲解:

  1. 确认实验器材和硬件:首先需要确认实验所需的器材和硬件是否齐全,包括前轮转向移动机器人、开发板、电机驱动器、直流电源以及电缆等。

  2. 连接电路:将电机驱动器和开发板通过电缆连接起来,并将直流电源连接到电机驱动器上,以为机器人提供动力。

  3. 编写控制程序:利用开发板上的控制软件,编写控制程序,对机器人进行控制。主要包括控制机器人的运动方向、速度和转向角度等。

  4. 连接传感器:为了实现机器人的自主导航,需要连接一些传感器,如红外线传感器、超声波传感器等,以便机器人能够感知周围环境,自主避障和控制转向。

  5. 调试程序:通过测试和调试程序,确保机器人能够正常运行和执行任务,如前进、转向、避障等。

  6. 实验操作:将机器人放置在实验场地上,让它自主移动和执行任务,如行驶一定距离、绕过障碍物等。

  7. 数据分析:根据实验结果,对机器人的运动性能和控制程序进行分析和评价,进一步优化机器人的运动控制和导航性能。

总之,前轮转向移动机器人实验需要多方面的技术支持和掌握,包括电路设计、控制程序编写、传感器连接、数据分析等,需要认真准备和实践。

4. 实验结果和分析

前轮转向移动机器人是一种常见的机器人类型,它通过控制前轮的转向来实现运动和转向。在实验中,我们通常会对机器人进行控制,比如通过遥控器或编程控制来实现机器人的移动和转向。下面就对前轮转向移动机器人的实验结果和分析进行详细讲解。

实验结果:

前轮转向移动机器人的实验结果通常包括机器人的运动轨迹、速度、转向角度等方面的数据。在实验中,我们可以通过设置不同的运动轨迹和控制参数来观察机器人的运动状态。

一般来说,当机器人向前移动时,我们可以通过控制前轮的转向角度来改变机器人的移动方向。同时,我们也可以通过控制机器人的速度来控制机器人的移动速度。在实验中,我们可以设置不同的速度和转向角度来观察机器人的运动状态。

分析:

前轮转向移动机器人的实验分析主要涉及机器人的运动控制和传感器反馈两个方面。下面分别进行详细讲解。

  • 运动控制

机器人的运动控制是实现机器人运动和转向的关键。在前轮转向移动机器人中,我们通常通过控制前轮的转向角度来改变机器人的运动方向。同时,我们也可以通过控制机器人的速度来控制机器人的移动速度。

在实验中,我们可以通过设置不同的速度和转向角度来观察机器人的运动状态。比如,当我们设置机器人的转向角度为90度时,机器人就会向左或向右转向。当我们设置机器人的速度为5cm/s时,机器人就会以5cm/s的速度向前移动。

  • 传感器反馈

机器人的传感器反馈是实现机器人自主控制的关键。在前轮转向移动机器人中,我们通常使用红外线或超声波传感器来获取机器人周围环境的信息。通过传感器反馈,机器人可以实现避障、跟随等自主控制功能。

在实验中,我们可以通过设置不同的传感器反馈方式来观察机器人的自主控制状态。比如,当机器人遇到障碍物时,我们可以通过传感器反馈来让机器人自动避障。当机器人需要跟随某个目标时,我们也可以通过传感器反馈来实现机器人的自主跟随。

总结:

前轮转向移动机器人的实验结果和分析涉及机器人的运动控制和传感器反馈两个方面。通过对机器人的运动轨迹、速度、转向角度等数据进行观察和分析,可以有效评估机器人的运动状态和控制能力。同时,通过对机器人的传感器反馈进行观察和分析,可以评估机器人的自主控制能力和适应性。

后续内容依据需要补充。

蓝桥ROS云课→一键配置←f1tenth和PID绕圈相关推荐

  1. 蓝桥ROS→f1tenth和PID绕圈←外传

    #勤写标兵挑战赛# 本节实现后,效果如下: 主要有3个点: 车体模型的简单配置 赛道环境的修改 算法参数的简要解释 ↓开启本节之前,需要完成↓: 一键配置←f1tenth和PID绕圈 (*Φ皿Φ*) ...

  2. 彩色的Hello World到彩色的Donuts甜甜圈-蓝桥ROS云课-C++案例

    局部: 整体: C++的Hello World代码如下: #include <stdio.h>int main() {printf("Hello world!\n"); ...

  3. 如何利用蓝桥云课提升学习ROS机器人的效率

    合适再深入学习,不合适一个网页简单使用也能了解其中大部分功能,免除繁琐配置的时间成本. 如果学习和试用一下ROS机器人(ROS1为例)最方便的办法就是打开如下网页: 课程编号854,已经学习人数超过1 ...

  4. ROS1云课→17化繁为简stdr和f1tenth

    ROS1云课→16机器人模型从urdf到xacro 蓝桥ROS云课可以使用Gazebo/V-Rep/Webots等三维仿真软件,这些都在之前博客中提及,或者有学生撰写对应博客进行分享. 二维的环境主要 ...

  5. ROS1云课→01简介和配置

    ROS1云课适用于kinetic/melodic/noetic.以蓝桥ROS云课为模板重新梳理. 云原生与蓝桥ROS机器人课程 2017-2022_zhangrelay的博客-CSDN博客 机器人课程 ...

  6. ROS1云课→18一键配置

    ROS1云课→17化繁为简stdr和f1tenth 之前的教程,打开那么多终端,每次都敲那么多指令,为啥? 熟能生巧而已,有些过程不能省略,但是,如果已经熟悉了这些过程,还每次都这么搞. 难道是有点情 ...

  7. ROS机器人程序设计部分大纲-适用于蓝桥云课及ROS1 KINETIC/MELODIC/NOETIC

    ROS机器人程序设计 ROS robot programming 课程编号 16300021 学分 3 开课学期 6 学时 讲课:32学时      实验:16 学时       实践:0学时 课程类 ...

  8. ROS域名解析问题记录(蓝桥云课ros.asc)

    需要用到的网站: ipaddress.com 需要自己查阅: 然后可以尝试ping一下如下: IPv4和IPv6都支持的 Microsoft Windows [版本 10.0.22572.201] ( ...

  9. 蓝桥云课ROS机器人发布5年啦(原实验楼ROS机器人在线云实践课程)

    在2017年春开发了这款课程,到2022年春已经5年了,并在近期逐步在博客公开了课程的扩展功能.当然这些工作都在2019年之前完成测试工作,后续全力转入ROS2课程及其相关应用型课程中. 感谢易科机器 ...

最新文章

  1. 实战SSM_O2O商铺_37【商品】商品列表之View层的实现
  2. C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
  3. Kafka Design
  4. 什么是LambdaExpression,如何转换成Func或Action(2)
  5. BFS(入门题--迷宫)
  6. leetcode 236. Lowest Common Ancestor of a Binary Tree | 236. 二叉树的最近公共祖先(Java)
  7. ABP从入门到精通(1):aspnet-zero-core项目启动及各项目源码说明
  8. 听课评课记录计算机应用,教师听课的评语(精选10篇)
  9. Linux编程(9)_进程
  10. 在Ubuntu 14.04安装和使用Docker
  11. 【配置关系】—Entity Framework实例详解
  12. 使用matlab计算并绘制连续信号的傅里叶变换
  13. 分区助手克隆linux,PartAssist 9.1+7.0 AOMEI 分区助手 免安装版 (简/繁/英 PE/Win 通用)...
  14. 图卷积神经网络5:图卷积的应用
  15. 台式计算机怎么查看网卡号,怎么查看台式机电脑有没有无线网卡?
  16. 抖音扫码跳转QQ群等外链源代码分享
  17. “正德厚生、臻于至善”这句话是什么意思?
  18. MySQL数据库 -- 库和表的操作
  19. 开源100天,OneFlow送上“百天大礼包”:深度学习框架如何进行性能优化?
  20. NOIP5424. 【NOIP2017提高A组集训10.25】凤凰院凶真 LCIS 方案

热门文章

  1. php发送 日历邮件_如何阻止垃圾邮件发送者攻击您的Google日历
  2. tomcat 启用https协议
  3. 4PAM在高斯信道与瑞利信道下的基带仿真系统实验
  4. CAN通讯车用触摸显示器
  5. 掉发不是病,秃起来真要命!作为程序猿的你,脱发了吗?
  6. 手写实现一个本地缓存
  7. Linux LVS 负载均衡群集
  8. 2016-ICLR-Order Matters- Sequence to sequence for sets
  9. 1, Test Harness
  10. wss协议 c 服务器,利用LIBWEBSOCKETS写WS、WSS服务端和客户端