当前位置:首页 » 编程软件 » ros编译console缺失

ros编译console缺失

发布时间: 2023-08-21 14:12:00

⑴ 如何自定义ros的action服务

1 创建工程
cd ~/catkin_ws/src
catkin_create_pkg action std_msgs rospy
2 设计action定义文件,内容有goal feedback result
这个和service的srv文件很像,放置再工程目录的action目录下

ration time_to_wait #goal,客户端发送的等待总时间
---
ration time_elapsed #result ,服务器端发送的等了多久,
uint32 updates_sent #更新多少次
---
ration time_elapsed # feedback,服务器端周期性的发送已等了多久
ration time_remaining #还剩多久

3 修改CMakeLists.txt文件,配置默认支持
3.1 增加模块actionlib_msgs
find_package(catkin REQUIRED COMPONENTS
..... #其他已有模块
actionlib_msgs#增加
)
3.2 增加action服务定义文件
add_action_files(
DIRECTORY action
FILES Timer.action
)
3.3 action的msg
generate_messages(
DEPENDENCIES
actionlib_msgs
std_msgs
)
3.4 catkin的msg支持
catkin_package(
CATKIN_DEPENDS
actionlib_msgs
)

4 编译工程
cd ~/catkin_ws
catkin_make

5 编写action服务器端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')

import rospy
import time
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
def do_timer(goal):
start_time = time.time()
time.sleep(goal.time_to_wait.to_sec())
result = TimerResult()
result.time_elapsed = rospy.Duration.from_sec(time.time() - start_time)
result.updates_sent = 0
server.set_succeeded(result)
rospy.init_node('timer_action_server')
server = actionlib.SimpleActionServer('timer', TimerAction, do_timer, False)
server.start()
rospy.spin()
6 编写ros的action客户端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')
import rospy
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
rospy.init_node('timer_action_client')
client = actionlib.SimpleActionClient('timer', TimerAction)
client.wait_for_server()
goal = TimerGoal()
goal.time_to_wait = rospy.Duration.from_sec(5.0)
client.send_goal(goal)
client.wait_for_result()
print('Time elapsed: %f'%(client.get_result().time_elapsed.to_sec()))

7 测试运行(开四个终端)
roscore
rosrun action action_c.py
rosrun action action_s.py

8 查看信息
liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic list
/rosout
/rosout_agg
/timer/cancel
/timer/feedback
/timer/goal
/timer/result
/timer/status

liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic info /timer/goal
Type: action/TimerActionGoal

Publishers: None

Subscribers:
* /timer_action_server (http://liao-eagle:42857/)

liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerActionGoal
[action/TimerActionGoal]:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
actionlib_msgs/GoalID goal_id
time stamp
string id
action/TimerGoal goal
ration time_to_wait

liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerGoal
[action/TimerGoal]:
ration time_to_wait

9 rqt_graph

热点内容
嵌入式服务器搭建 发布:2025-03-16 07:53:28 浏览:681
安卓系统微信登录设备管理在哪里 发布:2025-03-16 07:44:55 浏览:509
青少儿编程品牌 发布:2025-03-16 07:43:24 浏览:632
江西电商存储设备怎么样 发布:2025-03-16 07:32:10 浏览:310
中信电话密码是多少 发布:2025-03-16 07:32:08 浏览:373
怎么样学好编程 发布:2025-03-16 07:31:24 浏览:576
python输出素数 发布:2025-03-16 07:31:21 浏览:431
显卡加速编译 发布:2025-03-16 07:28:53 浏览:688
javadebug 发布:2025-03-16 07:16:21 浏览:297
怎么搭建linux服务器ftp 发布:2025-03-16 07:07:38 浏览:994