ros#
roslaunch#
通过启动文件启动多个 ROS 节点。
roslaunch {package name} {launch file}
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
rosnode#
显示有关活动 ROS 节点的信息。
rosnode list
rosrun#
在 ROS 包内运行可执行文件。
rosrun {package name} {script name}
rosrun rqt_graph rqt_graph
rostopic#
显示有关活动 ROS 主题的信息。
rostopic list
rostopic list | grep /camera //过滤以仅显示与 '/camera' 相关的主题
rostopic info /{topic_name}
$ rostopic info /cmd_vel
<!-- echo:深入这些消息元素并找出它们的值 -->
$ rostopic echo /chatter //显示发布到主题 chatter 的消息
$ rostopic echo -h // 额外选项
$ rostopic echo /chatter -n2 // 2 组信息
$ rostopic echo -c /odom //odom
rostopic pub {topic_name} {message_type} {data} //从命令行调用一个动作。
rosmsg#
显示可在 ROS 应用程序中使用的所有 ROS 消息的信息。
rosmsg info {Type} //Type 通过 'rostopic info' 获取
$ rosmsg info geometry_msgs/Twist
rosservice#
可以获取 Type,Type 告诉我们此服务使用的消息类型。 Rosrun 然后 rosservice call,两个终端都会得到输出。 Rosrun 如果设置了打印,rosservice call 将返回响应(例如 response_signal,response_message)
rosservice list
rosservice info /{service_name}
$ rosservice info /move_service //名称应为 'service_name = "move_service"'
$ rosservice call /move_service[SPACE][TAB]
rossrv info#
对动作不实用。
显示服务请求和响应
rossrv info {Type}
$ rossrv info tuos_ros_msgs/SetBool
<!-- 示例输出 -->
bool request_signal <-- 请求
---
bool response_signal <-- 响应 (参数 1/2)
string response_message <-- 响应 (参数 2/2)
chmod#
设置读取或写入权限。
chmod +x publisher.py
catkin_create_pkg#
catkin_create_pkg week1_pubsub std_msgs rospy
catkin build#
catkin build week1_pubsub
source ~/.bashrc //构建后应运行
roscore#
启动 ROS 主节点:ROS 功能所需的基线节点和程序。重新启动 ROS 主节点。
roscore
backup#
wsl_ros backup
restore#
wsl_ros restore
eog#
通过命令行打开图像
eog .
应用程序#
服务器#
先实现服务器,然后是客户端
服务器和客户端应具有相同的主题名称
客户端#
来自 client.py 的请求,服务器.py 的响应
服务#
......
动作#
rostopic#
- rostopic list: 识别网络上可用的动作服务器。
- rostopic echo: 查看由给定动作服务器发布的消息。
- rostopic pub: 从命令行调用一个动作。
获取需要什么参数?#
rostopic info
: 获取动作服务器的信息格式。复制 {Type}rosmsg info {Type}
步骤:#
-
将客户端初始化为类或设置为对象
包括名称、速率、参数,客户端等待服务器
可以有 shutdown_ops -
设置 feedback_callback 函数
可以在面板上打印
此客户端的函数将由服务器自动调用,而不是由其自身的任何函数调用。 -
设置目标
在客户端内部包含 send_goal 函数,例如client.send_goal(self.goal, feedback_cb=self.feedback_callback)
-
主循环
可以有while
可以更改布尔值然后到shutdown_ops
-
shutdown_ops 函数
应该if
条件然后rospy.logwarn()
应该在函数内部显示结果 -
if __name__ == '__main__':
可能有try
,except
过程:#
-
客户端 --- 目标 ---> 服务器:仅一次
rostopic pub {goal}[Tab][Space]
-
客户端 <--- 反馈 --- 服务器:每次都有更新
客户端的回调函数将由服务器自动调用,而不是由此客户端的任何函数调用。
- 客户端 <--- 状态 --- 服务器
状态值将由服务器判断并设置,然后发送给客户端
- 客户端 <--- 结果 --- 服务器
可以使用 client.get_result()
在 client.py 中获取值
更多#
from geometry_msgs.msg import Twist
Twist 是类型
geometry_msgs 是包
基于主题:其他节点可以理解
服务:低风险、快速、操作或计算
动作:持续时间较长,可能失败