前提
在B站看的赵虚左的ros2理论与实践
定义action结构体
int64 num
---
int64 sum
---
float64 progress
1. 编译报错
写完action服务端后编译报错
undefined reference to rclcpp_action::ServerBase::~ServerBase()
找不到serverBase,这属于库函数
解决
配置写action服务端的包的CMakeList.txt
find_package(rclcpp_action REQUIRED)
ament_target_dependencies (
test_node
"rclcpp"
"rclcpp_action"
)
使用命令行发送action send_goal报错
action服务端运行起来后,在另一个窗口模拟客户端发送指令报错
ros2 action send_goal /get_sum interfaces/action/Progress -f "{'num': 10}"
ros2 action send_goal /get_sum interfaces/action/Progress -f "{num: 10}"
ros2 action send_goal /get_sum interfaces/action/Progress "{'num': 10}"
ros2 action send_goal /get_sum interfaces/action/Progress {num: 10}
ros2 action send_goal /get_sum interfaces/action/Progress num 10
ros2 action send_goal /get_sum interfaces/action/Progress {"num":10}
报错如下
The passed action type is invalid
Failed to populate message fields: AttributeError()
ros2: error: unrecognized arguments: xx
解决
ros2 action send_goal /get_sum interfaces/action/Progress "{num: 10}"
ros2 action send_goal /get_sum interfaces/action/Progress '{num: 10}'