ROS实验课(一)

write in advance

        这篇博客记录一次ROS实验课,将遇到的问题和需要学习的技术提出,作为自己的回顾总结,也可以作为参考。

        实验内容如下,此次实验内容基于教材《ROS机器人开发技术基础》,主要记录实验步骤,操作流程。

        1)两个node间helloworld的发送

老师要求是两个节点,可以不使用robortstudio。robortstudio的作用是方便ros中项目的编写、开发,初学者友好,简化等等。坏处是下载,占内存。此处附上参考链接,跟着原作者做,一步一步来,能够实现效果。

ROS(Robot Operating System)创建两个节点并实现通信_ros主函数定义两个节点-CSDN博客

        1.1源代码

需要注意的是,链接中给的代码,example1_a.cpp中的sleep()函数拼写错误,需要将sleep()改为小写。源代码部分也可以一看,包括初始化,while循环等几个经典模块,代码不长,很简单。

        1.2 CMakeList文件

在CMakeList文件中,原文展示了三条指令:add_executable, target_link_libraries, add_dependencies, 分别表示添加可执行文件,链接,添加依赖。

正如其名,add_executable用于生成可执行文件, target_link_libraries将生成的文件链接,此处给出参考链接:ROS工作空间中src文件中add_executable、target_link_libraries函数修改-CSDN博客

此外,在CMakeLists.txt文件中添加依赖的操作在此处不是必须的。

依赖存在是为了解决大型项目中对源文件编译顺序要求严格的问题。假设源文件A依赖于源文件B,那么需要先编译源文件B,再编译A,不然会报错。类似地,此处给出参考链接

CMAKE之add_dependencies使用_cmake add dependency-CSDN博客

        1.3 总结

        这部分包括工作空间的创建,代码的编写,CMakeList文件内容的添加,还有最后的刷新环境变量(很容易忘记)。至此,简单的两个节点间的通信就完成了。后续的可以学习CMakeList.txt,也可以研究ROS中的通信机制。但现在,已经完成了一小项任务。

        2)git的使用

        这部分内容和ROS的直接关联度并不高,用于工程开发中实时地将项目当前进度上传,便于分享和保持当前进度,也无需担心后续优化部分折腾的过分优化影响原本正常的部分。

        这部分我分了两步进行:注册git、绑定SSH 与上传这两步。两步之间距离了不少时间,此处主要讲上传的部分。

        2.1 git的注册与绑定SSH。

        网上有博客,跟着做就好了,没有什么需要特别注意的。当然,建议保存好生成的密钥,包括图形界面和字符密码。也别忘记了密钥可以多次生成,后边生成的密钥可以覆盖之前的那份。

        2.2上传

        目前笔者已知的上传方法有两种,先clone,再上传 以及 直接上传。 

        个人感觉先clone再上传的过程复杂,建议直接上传。

        想要上传源代码到Github,需要先在Github上创建一个仓库,再将项目上传。

参考链接:Ubuntu项目上传Github_ubuntu上传github-CSDN博客

        在Github上生成一个新的repository后,按照指引会来到类似的页面,可以无脑复制粘贴官方提供的命令到终端,需要注意Ubuntu操作系统的路径。假设想上传helloword.cpp,可以在该源文件所在的文件夹中右键“在终端打开,然后输入上述命令”。

此处我遇到了一个问题,在git push - u origin main指令处

它要求你先后输入你GitHub的用户名和密码,但是因为GitHub官方已经取消了通过密码push文件,我们需要令牌,即token。再一次,给出参考链接:

Github创建个人访问令牌教程_npm访问令牌-CSDN博客

需要将令牌保存好,再次输入git push - u origin main,先输入用户名,再输入令牌,就成功了。

        3)Gazebo Rviz

很简单,将这两部分下载好,然后在终端运行,一个终端运行Gazebo,一个终端运行Rviz,再运行下载好的教学包中的roslaunch robot_sim_demo robot_spawn.launch(注意终端的路径),然后在Rviz中设置摄像头就好了。当然,此处给出参考截图。注意两个地方,image topic的选择,还有右侧的参考坐标系。

        4)rqt,rosbag

操作上最简单的部分,在下载好rqt和教学包后,无脑输入课本49-51页的指令即可。

原理也很简单,rosbag record<topic_names>记录话题名为<topic_names>的数据,ROS会以.bag作为后缀,以时间命名,将文件保存在当前路径下。可以通过rosbag info Path/Filename查看Pah路径下文件Filename的数据信息,也可以通过rosbag play Path/Filename播放包中的内容。

conclusion

        至此,结束,你会发现后面两部分很少,因为可讲述的不多。主要的内容还是CMakeList与工具Git的使用。三、四部分就是调用已经下载好的接口,简单操作,没有难度。

        如果你也有类似的实验课,祝你顺利。如果能起到参考价值,很开心。

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值