turtlebot官方给出的代码包功能

  • turtlebot:运行和使用带有ROS的Turtlebot的所需的所有驱动程序,最新版本为melodic,链接:https://github.com/turtlebot/turtlebot。
  • turtlebot_app:一组可在turtlebot上运行的简单演示和示例,最新版本为indogo,链接:https://github.com/turtlebot/turtlebot_apps。
  • turtlebot_simulator:用于Gazebo上模拟Turtlebot,最新版本为melodic,链接:https://github.com/turtlebot/turtlebot_simulator。
  • turtlebot_viz:Turtlebot的可视化和交互工具,最新版本为indigo,链接:https://github.com/turtlebot/turtlebot_viz。
  • turtlebot_interactions:是turtlebot_viz的演变,是用户与turtlebot进行交互的程序,最新版本为indigo,链接:https://github.com/turtlebot/turtlebot_interactions。
  • robot_pose_ekf:用来在机器人IMU和里程计值上应用传感器融合来估计3D位姿,链接:https://github.com/udacity/robot_pose_ekf。
  • depthimage_to_laserscan:将深度图像转换为激光扫描以用于导航和定位,链接:https://github.com/ros-perception/depthimage_to_laserscan/tree/melodic-devel。
  • kobuki_msgs:kubuki的ROS消息、服务和操作接口,链接:https://github.com/yujinrobot/kobuki_msgs/tree/melodic。
  • kobuki_desktop:Kubuki的可视化和仿真工具,链接:https://github.com/yujinrobot/kobuki_desktop/tree/melodic。删去其中的kobuki_qtestsuite,在kubuki_desktop中添加以下三个程序包:
    orocos-bayesian-filtering:贝叶斯滤波库,链接:https://github.com/orocos/orocos-bayesian-filtering。
    turtlebot_msgs:turtlebot的消息、服务和动作,链接:https://github.com/turtlebot/turtlebot_msgs,。
    joystick_drivers:一组简单的节点,用于支持各种类型的操纵杆输入,并从底层操作系统信息中产生ROS消息,链接:https://github.com/ros-drivers/joystick_drivers/tree/master。
    astar:A*算法,链接:。
  • kubuki:底盘驱动程序的ROS包装器以及各类工具和应用程序,链接:https://github.com/yujinrobot/kobuki/tree/melodic。
  • yujin_ocs:Yujin Robot的开源控制系统,包括库和可执行文件,链接:https://github.com/yujinrobot/yujin_ocs,需要下载其中的yocs_cmd_vel_mux和yocs_controllers。

1. 体验内容

# 启动最基础launch文件
roslaunch turtlebot_bringup minimal.launch
# 启动键盘控制文件
roslaunch turtlebot_teleop keyboard_teleop.launch
# 查看话题信息
rostopic info /cmd_vel_mux/input/navi
# 发布话题消息
rostopic pub /cmd_vel_mux/input/navi geometry_msgs/Twist "linear:x: 0.0y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 1"

注意,发布话题消息控制前需要先杀死键盘控制节点,否则键盘控制节点会持续发布停止指令。

2. 作业内容

一、查看tf树和rqt_graph

rosrun rqt_tf_tree rqt_tf_tree


可以看到,其上面三个tf对象为odom(里程计)、base_footprint(机器人行走足迹)、base_link(底盘基底)

rqt_graph

二、列出当前运行的节点和话题

运行rosnode list查看节点列表

/bumper2pointcloud
/cmd_vel_mux
/diagnostic_aggregator
/mobile_base
/mobile_base_nodelet_manager
/robot_state_publisher
/rosout
/rqt_gui_py_node_8445
/rqt_gui_py_node_9013
/turtlebot_teleop_keyboard

运行rostopic list查看话题列表

/cmd_vel_mux/active
/cmd_vel_mux/input/navi
/cmd_vel_mux/input/safety_controller
/cmd_vel_mux/input/switch
/cmd_vel_mux/input/teleop
/cmd_vel_mux/parameter_descriptions
/cmd_vel_mux/parameter_updates
/diagnostics
/diagnostics_agg
/diagnostics_toplevel_state
/joint_states
/mobile_base/commands/controller_info
/mobile_base/commands/digital_output
/mobile_base/commands/external_power
/mobile_base/commands/led1
/mobile_base/commands/led2
/mobile_base/commands/motor_power
/mobile_base/commands/reset_odometry
/mobile_base/commands/sound
/mobile_base/commands/velocity
/mobile_base/controller_info
/mobile_base/debug/raw_control_command
/mobile_base/debug/raw_data_command
/mobile_base/debug/raw_data_stream
/mobile_base/events/bumper
/mobile_base/events/button
/mobile_base/events/cliff
/mobile_base/events/digital_input
/mobile_base/events/power_system
/mobile_base/events/robot_state
/mobile_base/events/wheel_drop
/mobile_base/sensors/bumper_pointcloud
/mobile_base/sensors/core
/mobile_base/sensors/dock_ir
/mobile_base/sensors/imu_data
/mobile_base/sensors/imu_data_raw
/mobile_base/version_info
/mobile_base_nodelet_manager/bond
/odom
/rosout
/rosout_agg
/statistics
/tf
/tf_static

三、查看话题/odom的话题类型和数据结构,并对各个部分进行标注解释

运行rostopic info /odom查看/odom话题类型

Type: nav_msgs/OdometryPublishers: * /mobile_base_nodelet_manager (http://lj:34723/)Subscribers: None

运行rosmsg info nav_msgs/Odometry查看/odom话题的具体数据结构

std_msgs/Header headeruint32 seqtime stampstring frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance posegeometry_msgs/Pose posegeometry_msgs/Point positionfloat64 xfloat64 yfloat64 zgeometry_msgs/Quaternion orientationfloat64 xfloat64 yfloat64 zfloat64 wfloat64[36] covariance
geometry_msgs/TwistWithCovariance twistgeometry_msgs/Twist twistgeometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 zgeometry_msgs/Vector3 angularfloat64 xfloat64 yfloat64 zfloat64[36] covariance

四、使用rostopic pub 指令控制机器人做圆周运动

控制机器人做圆周运动即按一定频率不间断地给turtlebot发送前进的转弯的指令。

rostopic pub -r 10 /cmd_vel_mux/input/navi geometry_msgs/Twist "linear:x: 0.2y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: -0.5"

五、ros编程“hello world”

需要编写一个包含话题发布的节点,发出消息类型为String的字符串“hello world”。

catkin_create_pkg beginner_tutorials roscpp std_msgs rospy
catkin_make
source devel/setup.bash
roscd beginner_tutorials
mkdir src
cd src
touch talker.cpp
gedit talker.cpp

talker.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv)
{ros::init(argc, argv, "talker");ros::NodeHandle n;ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);ros::Rate loop_rate(10);int count = 0;while(ros::ok()){std_msgs::String msg;std::stringstream ss;ss << "hello world" << count;msg.data = ss.str();ROS_INFO("%s", msg.data.c_str());chatter_pub.publish(msg);ros::spinOnce();loop_rate.sleep();++count;}return 0;
}
gedit ../CMakeList.txt

添加内容

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

再进行一次编译和运行

cd ../../..
catkin_make
source devel/setup.bash
rosrun beginner_tutorials talker

出现

[ INFO] [1631770033.782646511]: hello world0
[ INFO] [1631770033.882787094]: hello world1
[ INFO] [1631770033.982805683]: hello world2
......

官方教程:http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

实验一 编程 Hello World相关推荐

  1. 微型计算机原理怎么编程,微机原理实验一编程实现键盘输入和显示

    <微机原理实验一编程实现键盘输入和显示>由会员分享,可在线阅读,更多相关<微机原理实验一编程实现键盘输入和显示(9页珍藏版)>请在人人文库网上搜索. 1.实验一编程实现键盘输入 ...

  2. 合工大软件工程Java实验4--JavaWeb编程

    使用JSP实现登录注册案例 合工大Java实验4--JavaWeb编程 一.Tomcat安装.配置 1.下载 2.修改tomcat服务端口 二.HTML表单(form) form表单 post和get ...

  3. java mapreduce编程_Hadoop实验——MapReduce编程(1)

    实验目的 通过实验掌握基本的MapReduce编程方法. 掌握用MapReduce解决一些常见的数据处理问题,包括数据去重.数据排序和数据挖掘等. 通过操作MapReduce的实验,模仿实验内容,深入 ...

  4. linux实验五编程淮海工学院,实验一-LinuxC编程工具GCC和GDB.doc

    实验一-LinuxC编程工具GCC和GDB 淮海工学院计算机工程学院实验报告书 课程名: <Linux程序设计> 题 目: 实验一 Linux C编程工具:GCC和GDB 班 级: 软件1 ...

  5. 软件工程实验一--编程随机生成30个四则运算,算数包括100以内的整数和真分数。...

    软件工程实验一: --编程随机生成30个四则运算,算数包括100以内的整数和真分数. 实验思路:先利用rand()函数随机生成两个算数,包括100以内的整数和真分数,生成100以内的整数,用rand( ...

  6. 《机器学习与数据挖掘》实验五 编程实现误差逆传播算法(BP算法)

    前言: 摘要:本文对机器学习实验五 标准BP算法的代码进行实现,如果不了解的BP算法的话,可以自行上网搜索BP算法的详解. 实验题目:编程实现误差逆传播算法(BP算法) 实验目的:掌握误差逆传播算法( ...

  7. 计算机网络课程实验4——编程实现路由算法(迪杰斯特拉算法)

    实验目的: 运用各种编程语言实现基于 Dijkstra 算法的路由软件. 实验意义: 通过本实验,使学生能够对路由原理和路由算法有进一步的理解和掌握. 实验步骤: 1, 选择合适的编程语言编程实现基于 ...

  8. 段鹏飞java_面向对象与多线程综合实验-网络编程

    教师:段鹏飞 实验5-实验目的 了解Java网络编程基础知识;掌握java.net包中关于网络的基本类及其属性和方法;掌握基于Socket的客户和服务器编程方法. 实验内容(必做) 编写程序,将前面课 ...

  9. 产销平衡的运输问题上机实验matlab_MATLAB编程(运筹学之运输问题)

    运筹学与最优化MATLAB编程 使用MATLAB求解: 1.某公司经销甲产品.它下设三个加工厂.每日的产量分别是:A1位7吨,A2为4吨,A3为9吨.该公司把这些产品分别运往4个销售点.各销售点的每日 ...

  10. 数据库实验IDEA编程Java程序实现连接数据库以及增删改查JDBC

    IDEA编程Java程序实现连接数据库以及增删改查JDBC IDEA的mysql环境配置建议参考该博客:戳我 我用的是java11和此博客的配置略有出入,不过一般的问题都可以百度解决 这是我实验用的数 ...

最新文章

  1. 吴恩达机器学习笔记 —— 3 线性回归回顾
  2. hadoop中的序列化与Writable类
  3. 后台获得客户端IP地址
  4. 1、tomcat目录及端口规划实践
  5. Hadoop源代码分析(四)
  6. 长亭技术专栏 安全攻防技术分享
  7. TCP/UDP 常用端口列表汇总
  8. python2.7 跨文件全局变量的方法
  9. QT多国语言加载qm文件不起效果问题总结
  10. table合并单元格宽度自适应
  11. 开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...
  12. 生信宝典被分享最多的15篇文章
  13. 计算机桌面待机屏怎么取消,电脑待机锁屏怎么设置
  14. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_01maven概述
  15. 13-微信小程序商城 产品简介布局(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  16. 如何在jdk官网下载想要的版本
  17. 深入了解C++用什么软件编程
  18. 搜狗推送接口-搜狗推送推送工具
  19. '命名空间xxx中不存在类型或命名空间名xx(是否缺少程序集引用)'-异常报错的原因
  20. 一个月收入 3000 的人,指导一个月收入 30000 的人去投资,你可以无视了……

热门文章

  1. byte转文件流 下载到本地
  2. Linux上用户执行命令记录
  3. python操作mysql(二)
  4. bzoj 1040: [ZJOI2008]骑士 树形dp
  5. C# Socket系列三 socket通信的封包和拆包
  6. 35个必备的wordpress插件
  7. http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用
  8. java notify 的作用_java 为什么notify和notifyAll都不起作用?
  9. word2013插入excel对象报错_修改Word文档中嵌入的Excel对象
  10. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?