Baxter学习笔记6-鼠标点动控制baxter机械臂--实战篇

本文详细记录了如何通过捕获鼠标点击事件,利用ROS和Kinect,控制Baxter机器人机械臂跟踪目标点的过程。实验涉及启动action_server、kinect视频流、moveit服务及控制脚本等多个终端操作。
摘要由CSDN通过智能技术生成

本次实验目的在于采用捕获鼠标坐标点,通过点击鼠标左键或者右键,发布目标点,然后让baxter跟踪目标点

terminal 1 – 启动action_server服务:

in the baxter.sh's floder
检查本机IP,注意修改baxter.sh 内的 your_ip      
./baxter.sh or run 'baxter' in the terminal -->see detail in the ~/.bashrc
rosrun baxter_tools enable_robot -e 使能机器人
rosrun baxter_tools enable_robot -s 查看机器人状态
rosrun baxter_interface joint_trajectory_action_server.py 关节轨迹动作服务

terminal 2 – 启动kinect视频流并捕获鼠标点:

./baxter.sh 
rosrun kinect2_bridge kinect2_bridge
rosrun kinect2_viewer click_PublishPosition
其中,click_PublishPosition.cpp 中须在Viewer.cpp的基础上做如下修改,
1,创建 onMouse()鼠标坐标点采样的外部函数:
void onMouse(int event, int x, int y, int flags, void* ustc){
//  std::cout << "onMouse: " << x << " " << y << std::endl;
    mouseX  = x;
    mouseY  = y;
    mouseBtnType = event;
}
2,在imageViewer() 上做回调函数,从而更新随时变化的鼠标位置。
cv::setMouseCallback(window_name, onMouse, nullptr);
3,由于需要把采样到的鼠标坐标点发布到topic上,方便控制机器人的脚本订阅,因而需要创建Publisher
  //add the Publisher 
  ros::Publisher leftBtnPointPub = nh.advertise<geometry_msgs::PointStamped>
                                      ("/kinect2/click_point/left", 1);
  ros::Publisher rightBtnPointPub = nh.advertise<geometry_msgs::PointStamped>
                                      ("/kinect2/click_point/right", 1);
4,修改imageViewer(),作为彩色图像回显主函数中,发布鼠标三维点。
void imageViewer()
  {
    cv::Mat color, depth, depthDisp, combined;
    std::chrono::time_point<std::chrono::high_resolution_clock> start, now;
    double fps = 0;
    size_t frameCount = 0;
    std::ostringstream oss;
    std::ostringstream ossXYZ;
    const cv::Point pos(5, 15);
    const cv::Scalar colorText = CV_RGB(255, 0, 0); // text color is red
    const double sizeText = 0.5;
    const int lineText = 1;
    const int font = cv::FONT_HERSHEY_SIMPLEX
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值