日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt-ros插件:创建工程,编译实现操控小乌龟(二)

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt-ros插件:创建工程,编译实现操控小乌龟(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聲明:本插件依賴于更新的qt5.9,不需安裝qt,安裝插件自行安裝qt。詳情見點擊打開鏈接

1、創(chuàng)建工程

最后點擊完成即可。

2,建好后右鍵點擊src,打開Terminal,執(zhí)行指令建包catkin_create_qt_pkg btn

(預先安裝建包工具,指令:sudo apt-get install ros-indigo-qt-ros


這就建立


這就建好一個包了,點擊左下角小錘子編譯一下,通過。


3、然后點擊project->run,添加節(jié)點如圖:


4,在UI界面拖放幾個按鈕,并改名字,右擊按鈕轉到槽,在主窗口cpp文件中寫入qnode.up();(因為qnode里面定義的是up和left),另一按鈕同理。

5主要的是qnode.cpp文件,首先在頭文件中定義

然后寫qnode.cpp文件

/*** @file /src/qnode.cpp** @brief Ros communication central!** @date February 2011**//***************************************************************************** ** Includes *****************************************************************************/#include <ros/ros.h> #include <ros/network.h> #include <string>#include <std_msgs/String.h> #include <geometry_msgs/Twist.h>#include <sstream> #include "../include/btn/qnode.hpp"/***************************************************************************** ** Namespaces *****************************************************************************/namespace btn {/***************************************************************************** ** Implementation *****************************************************************************/QNode::QNode(int argc, char** argv ) :init_argc(argc),init_argv(argv){}QNode::~QNode() {if(ros::isStarted()) {ros::shutdown(); // explicitly needed since we use ros::start();ros::waitForShutdown();}wait(); }bool QNode::init() {ros::init(init_argc,init_argv,"btn");if ( ! ros::master::check() ) {return false;}ros::start(); // explicitly needed since our nodehandle is going out of scope.ros::NodeHandle n;// Add your ros communications here.chatter_publisher = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);start();return true; }bool QNode::init(const std::string &master_url, const std::string &host_url) {std::map<std::string,std::string> remappings;remappings["__master"] = master_url;remappings["__hostname"] = host_url;ros::init(remappings,"btn");if ( ! ros::master::check() ) {return false;}ros::start(); // explicitly needed since our nodehandle is going out of scope.ros::NodeHandle n;// Add your ros communications here.chatter_publisher = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);start();return true; }/*void QNode::run() {ros::Rate loop_rate(1);int count = 0;while ( ros::ok() ){geometry_msgs::Twist msg;msg.linear.x = 1.0;msg.angular.z = 0.0;chatter_publisher.publish(msg);// log(Info, msg.linear.x);// log(Info, msg.angular.z);logging_model.insertRows(logging_model.rowCount(),1);std::stringstream logging_model_msg;logging_model_msg << "[DEBUG] [" << ros::Time::now() << "]: " <<"linear = "<< msg.linear.x<<" angular = "<<msg.angular.z;QVariant new_row(QString(logging_model_msg.str().c_str()));logging_model.setData(logging_model.index(logging_model.rowCount()-1),new_row);Q_EMIT loggingUpdated(); // used to readjust the scrollbarros::spinOnce();loop_rate.sleep();++count;}*/void QNode::up() {ros::Rate loop_rate(1);if( ros::ok() ){geometry_msgs::Twist msg;msg.linear.x = 1.0;msg.angular.z = 0.0;chatter_publisher.publish(msg);ros::spinOnce();loop_rate.sleep();} }void QNode::left() {ros::Rate loop_rate(1);if ( ros::ok() ){geometry_msgs::Twist msg;msg.linear.x = 0.0;msg.angular.z = 1.0;chatter_publisher.publish(msg);ros::spinOnce();loop_rate.sleep();}//std::cout << "Ros shutdown, proceeding to close the gui." << std::endl;//Q_EMIT rosShutdown(); // used to signal the gui for a shutdown (useful to roslaunch) }void QNode::log( const LogLevel &level, const std::string &msg) {logging_model.insertRows(logging_model.rowCount(),1);std::stringstream logging_model_msg;switch ( level ) {case(Debug) : {ROS_DEBUG_STREAM(msg);logging_model_msg << "[DEBUG] [" << ros::Time::now() << "]: " << msg;break;}case(Info) : {ROS_INFO_STREAM(msg);logging_model_msg << "[INFO] [" << ros::Time::now() << "]: " << msg;break;}case(Warn) : {ROS_WARN_STREAM(msg);logging_model_msg << "[INFO] [" << ros::Time::now() << "]: " << msg;break;}case(Error) : {ROS_ERROR_STREAM(msg);logging_model_msg << "[ERROR] [" << ros::Time::now() << "]: " << msg;break;}case(Fatal) : {ROS_FATAL_STREAM(msg);logging_model_msg << "[FATAL] [" << ros::Time::now() << "]: " << msg;break;}}QVariant new_row(QString(logging_model_msg.str().c_str()));logging_model.setData(logging_model.index(logging_model.rowCount()-1),new_row);Q_EMIT loggingUpdated(); // used to readjust the scrollbar }} // namespace btn 最后,編譯運行就可以了,(首先加入turtlesim小烏龜的節(jié)點,然后啟動roscore歐)。點擊connect連接,就可以按鍵控制了。



PS:1、頭文件包含問題:

用插件創(chuàng)建或導入ROS package之后還需要修改.workspace文件,

在<IncludePaths>標簽下加入下面這行

<Directory>/opt/ros/indigo/include</Directory>
  • 1

這樣就可以使得Qt找到ros頭文件,比如<ros/ros.h>?

2,connect前一定要、一定要在use environment variable前打鉤或者輸入ROS IP。

在此非常感謝我的小伙伴的幫助。

借鑒自:

1、http://blog.csdn.net/yaked/article/details/45342137

2、http://blog.csdn.net/u013453604/article/details/52186375

3、http://blog.csdn.net/qq_30460905/article/details/79034633




總結

以上是生活随笔為你收集整理的Qt-ros插件:创建工程,编译实现操控小乌龟(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女性杂交内射妇女bbwxz | 岛国av一区二区三区 | 区一区二区三 | 99视频免费在线观看 | 欧洲性猛交 | 亚洲人成无码www久久久 | 亚洲精品无码一区二区 | 国产制服91一区二区三区制服 | 日b在线观看| 日本中文字幕免费观看 | 日韩在线三级 | 香港三级日本三级 | 色欧美88888久久久久久影院 | 午夜国产一区 | 国产日韩欧美精品在线 | xxx久久 | 91成人在线视频 | www,色| 蜜臀久久99精品久久久久久宅男 | 亚洲va天堂va欧美ⅴa在线 | 极品五月天 | 久久精品视频在线免费观看 | 国产黄色观看 | 99久久亚洲精品日本无码 | av高清一区二区 | 日韩国产精品一区二区三区 | 亚瑟av| 欧美又粗又大xxxxbbbb疯狂 | 国产中文字幕一区二区 | 激情欧美日韩 | 欧洲在线视频 | 精品一级少妇久久久久久久 | 国产无码精品合集 | 免费吃奶摸下激烈视频 | 国产一级免费av | 天天干天天操天天爱 | 国产毛片在线视频 | 色综合天天色综合 | 人人草在线 | 亚洲欧美综合久久 | 欧美人与性动交α欧美精品 | 亚洲一区二区三 | 激情视频一区二区三区 | youjizz.com国产| 日日舔夜夜操 | 九九九久久久久 | 免费福利视频在线观看 | 国产玖玖视频 | 日韩中文电影 | 国产精品久久久久一区二区三区 | 四虎最新站名点击进入 | 97精品一区二区视频在线观看 | 国产成人欧美一区二区三区的 | 国产三级精品三级在线观看 | 日本一级片免费看 | 国产亚洲一区二区在线 | 一区二区视频免费 | 国产3区 | 色哟哟官网 | 女生被男生c | 亚洲天堂2018av | 国产精品腿扒开做爽爽爽挤奶网站 | 亚洲区 欧美区 | 日韩精品人妻中文字幕 | 最新中文字幕av专区 | 欧美女人天堂 | 一本一道波多野结衣av黑人 | 91在线免费看 | 亚州av综合色区无码一区 | 夜夜嗨老熟女av一区二区三区 | 国产在线观看免费高清 | 色吊丝中文字幕 | 91在线色| 日韩一区二区高清视频 | 国产成人在线电影 | 中文字幕亚洲欧美日韩在线不卡 | 成人首页| 伊人91视频 | 视频这里只有精品 | 黄页网站视频在线观看 | 在线免费黄色av | 秋霞视频在线观看 | 在线观看99 | 超碰97国产 | 免费一级特黄3大片视频 | 人妻丰满熟妇av无码区hd | 操人在线观看 | 中国一区二区视频 | 欧美激情伊人 | 福利亚洲 | 毛片免费一区二区三区 | 亚洲国产美女视频 | 色哟哟一区二区 | www成人在线观看 | 最全aⅴ番号库网 | 色77777| 国产一区二区电影 | 精品国产免费一区二区三区 | 人人爽爽人人 |