目录

  • 1 智能移动机器人-基础篇
    • 1.1 第一讲 坐标变换(5课时)
    • 1.2 第二讲 ROS基本概念(3课时)
      • 1.2.1 实训
    • 1.3 第三讲-编写简单的订阅者和发布者节点(4课时)
      • 1.3.1 实训
      • 1.3.2 实训2
    • 1.4 第四讲 ROS服务及编程(2课时)
    • 1.5 第五讲 ROS坐标变换工具TF(4课时))
    • 1.6 第六讲 ROS参数及应用(2课时))
    • 1.7 第七讲 运动学模型及航迹推算(4课时)
      • 1.7.1 实训1.7.1
    • 1.8 第八讲 URDF机器人建模及应用(4课时))
      • 1.8.1 实训1.8.1
    • 1.9 第九讲 QT-ROS交互界面应用开发(4课时)
  • 2 智能移动机器人-提高篇
    • 2.1 第一讲 栅格地图及应用(2课时)
    • 2.2 第二讲 局部路径规划及避障(6课时)
    • 2.3 第三讲 运动学模型的概率表示(2课时)
    • 2.4 spark实验5-激光雷达信息处理-标定
    • 2.5 第四讲 激光雷达及其测量模型(4课时)
    • 2.6 第五讲 蒙特卡洛定位(MCL)(4课时)
    • 2.7 第六讲 并发定位与建图(SLAM)(4课时)
    • 2.8 第七讲 自主导航(6课时)
    • 2.9 第八讲 Librviz可视化应用开发(4课时)(4课时)
  • 3 实训篇-SparkT移动机器人(室内)
    • 3.1 SparkT移动机器人介绍
    • 3.2 演示视频
    • 3.3 相关工具及资料下载
    • 3.4 spark实验1-控制spark移动
    • 3.5 spark实验2-编写节点控制spark移动
      • 3.5.1 python版本
    • 3.6 spark实验3-并发定位与建图
    • 3.7 spark实验4-机器人定位与导航
    • 3.8 spark实验6-基于激光雷达的行人检测与跟踪
    • 3.9 spark实验7-机械臂抓取
    • 3.10 2023年夺宝奇兵大赛培训资料
    • 3.11 2024年夺宝奇兵半自动赛培训
      • 3.11.1 半自动赛程序设计方法2024年7月3日
    • 3.12 2024年夺宝奇兵自动任务赛培训
      • 3.12.1 代码框架(noetic版本)
      • 3.12.2 代码框架(kinetic版本)
      • 3.12.3 自动赛讲解视频2024年6月29日
      • 3.12.4 ROS下QT界面开发2024年6月30日
      • 3.12.5 目标识别与机械臂抓取7月1日
      • 3.12.6 自动赛思路讲解(2024,.7.3)结课
      • 3.12.7 基于大模型的辅助开发(python)
        • 3.12.7.1 案例1:激光雷达数据订阅与发布
        • 3.12.7.2 案例2:激光雷达与地图匹配程度计算
        • 3.12.7.3 案例3:基于Web的机器人远程控制
        • 3.12.7.4 案例4:ROS的QT界面应用开发
        • 3.12.7.5 案例5:ROS下语音识别及QT界面
        • 3.12.7.6 案例6:从摄像头获取图像数据并进行二维码识别
        • 3.12.7.7 案例7:Gazebo仿真
        • 3.12.7.8 案例8:基于RGBD的行人识别与跟踪
    • 3.13 spark实验-基于teb-local-planner的导航
    • 3.14 Spark实验-利用rf2o提高定位精度
  • 4 室外自主导航车(AGV)-实训篇
    • 4.1 AGV本体介绍
    • 4.2 实训项目1-AGV建模(URDF)
    • 4.3 实训项目2-AGV运动学模型及航迹推算
    • 4.4 实训项目3-AGV运动控制
    • 4.5 实训项目4-基于GPS的点对点导航
    • 4.6 实训项目5-基于GPS的循迹
    • 4.7 实训项目6-基于三维激光雷达(点云)的障碍物检测与避障
    • 4.8 实训项目7-基于深度相机(RGBD)的目标识别与跟踪
  • 5 智能机器人技术实践上课录屏
    • 5.1 实训项目1-2024年9月3日
第二讲 ROS基本概念(3课时)

预习
安装和配置ros环境http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
浏览ROS的文件系统http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem
创建并构建ROS包http://wiki.ros.org/ROS/Tutorials/CreatingPackage,http://wiki.ros.org/ROS/Tutorials/BuildingPackages
理解ROS的节点http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes
理解ROS的话题及消息http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics
理解ROS的服务及参数http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams

catkin工作区http://wiki.ros.org/catkin/workspaces

installation guide: (ubuntu 20.04,ros noetic,http://wiki.ros.org/noetic/Installation/Ubuntu)

step1:  Setup your sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
or mirriors
sudo 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'
step2: Set up your keys
step 2.1
sudo apt install curl
step 2.2
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
step 3:install ation
step 3.1
sudo apt update
step 3.2:
sudo apt install ros-noetic-desktop-full
step 4:Environment setup (Bash for example)
step 4.1:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
step 4.2:
source ~/.bashrc
step 5: Dependencies for building packages
step 5.1:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
step 5.2:
sudo apt install python3-rosdep
step 5.3:
sudo rosdep init
step 5.4:
rosdep update


step1:



step2.1:






step2.2:


note:if no valid OpenPGP data found,


retry


step3.1





step3.2:




step4:


check  ~/.bashrc 





step 5.1:


step 5.2:





step 5.3:


(if time out,retry)


step 5.4:


note:if time out,retry



视频1:在虚拟机下安装ROS:

视频2:利用VirtualBox安装Ubuntu虚拟机

(1)https://www.virtualbox.org/wiki/Downloads(下载VirturalBox并安装)

(2)http://releases.ubuntu.com/xenial/下载ubuntu的映像文件

(3)https://www.virtualbox.org/manual/UserManual.html#gui-createvm  安装虚拟机

 

视频3:创建ROS工作区和包


视频4:ROS基本概念-节点、话题、消息,37'54''


============================================================

补充材料-视频5:虚拟机及ROS安装(陈金明同学介绍安装经验),选自电子科技大学中山学院2020春季班直播课(2020.3.26)

课件:2020-3-14上传

直播课程回放(2020-4-2,电子科技大学中山学院2020春季班第四周直播课)

陈金明、胡绵宇、林国荣、康宇豪、陈煅聪、丘俊麟、韦威龙、蔡智伟、樊星、陈琳、丁清正等同学介绍ROS安装、Eigen库使用、turtlesim节点控制等内容


第二讲 ROS基本概念

1、包package
2、节点node
3、话题topic
4、消息message
5、服务service


1、包package

包Package:包(Package)是ROS节点的软件组织单位。
每个包可以包含库、可执行文件、脚本以及其它部件。
Manifests (package.xml):Manifest是关于包的描述的元文件,用于定义包之间的依赖关系,获取包的元信息(包括:名称、版本、维护者、版权等等)。

实用工具及命令
    rospack查看包的信息
    rospack list显示所有包
    rospack find [package_name]根据名字查找某个包
    roscd [package_name]通过包的名字快速切换目录
    rosls [package_name]显示某个包的文件

2、计算图

通过计算图来介绍ROS的基本概念:节点(Node)、话题(Topic)、消息(消息)



图 GMapping SLAM 的部分计算图

其中,椭圆为节点(ROS的程序)、方框为话题(信息高速公路)、话题中传送的是消息。

同一个话题传送相同类型的消息。 

箭头表示消息的传输方向。从节点指向话题的箭头,表示对应的节点是发布者(Publisher),

例如上图中,iiiroboticslidar2为发布者,向/scan话题发布消息(sensor_msgs/LaserScan),该消息为

二维激光雷达消息,

从话题指向节点的箭头,表示对应的节点是订阅者(Subscriber)、例如上图中的spark_slam_gmapping节点,从

scan话题订阅激光雷达的信息。

又如,tf话题中传送坐标变换的消息。

(tensorflow) spark@spark:~$ rostopic type /scan
sensor_msgs/LaserScan
(tensorflow) spark@spark:~$ rosmsg show sensor_msgs/LaserScan
std_msgs/Header header
 uint32 seq
 time stamp
 string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities








常见问题:

1、catkin_make

ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
Make sure that you have installed "catkin_pkg", it is up to date and on the PYTHONPATH.

参考解决方法:

https://stackoverflow.com/questions/43024337/why-this-error-when-i-try-to-create-workspaces-in-ros#