C++/ROS
Hello_RoyChen
自动驾驶算法工程师。
展开
-
Ubuntu 20.04 安装ros update报错
E: The repository 'http://mirrors.ustc.edu.cn/ros/ubuntu kylin Release' does not have a Release file.原创 2022-12-01 13:33:51 · 580 阅读 · 1 评论 -
【bazel】调用yaml的so库
基于bazel编译c++,调用yaml生成的so库原创 2022-10-04 23:04:11 · 896 阅读 · 0 评论 -
【bazel】调用yaml库
bazel 调用第三方库原创 2022-10-03 00:25:47 · 731 阅读 · 0 评论 -
Xavier安装ros环境(保姆级教学,一遍成功)
arm板安装ros环境原创 2022-07-25 15:30:55 · 3615 阅读 · 0 评论 -
关键字explicit学习
1.初始化表达式在了解explicit之前,看一段代码#include <iostream>using namespace std;class Test1{public : Test1(int a1):a(a1){}private: int a;};int main(){ Test1 t1 = 12; Test1 t2(13); return 0;}这段代码中Test1构造函数的声明用的冒号表示的是初始化表达式。参考连接:C++.原创 2021-11-15 14:51:16 · 1477 阅读 · 0 评论 -
template<class, class>模板参数为两个类
#include <iostream>using namespace std;class IntClass { public: void IntFunction() { cout << "IntFunction" << endl; };};class DoubleClass { public: void DoubleFunction() { cout << "DoubleFunction.原创 2021-11-03 11:36:49 · 843 阅读 · 0 评论 -
引用的理解
#include <iostream>using namespace std;int main(){ //b作为a的引用,其值和地址和a一样。 int a = 10; int& b = a; cout << "a: " << &a << endl; cout << "b: " << b << endl; cout << "b: " << &b .原创 2021-11-03 10:36:09 · 122 阅读 · 0 评论 -
函数值传递,指针传递,引用传递
函数的值传递,指针传递,引用传递。int a = 10;//创建一个变量a,这里其实变量a的属性包含两部分,地址0x1234和值10;//可以把地址0x1234视为访问值10的一个接口。//如果要修改变量a的值可以通过直接访问地址和间接访问地址的方式修改值10直接访问地址修改值10,如下:a = 20;间接访问地址修改值10的方式如下:int * b = &a; //将a的地址存入到指针变量b中。(*b)++;//解引用获取a的地址指向的值10,然后进行++操作。原创 2021-10-28 15:23:34 · 115 阅读 · 0 评论 -
c++一行代码太长
对于语句,直接回车换行就可以了。如果定义宏,则要用“\”作为“续行符”原创 2021-10-28 11:09:45 · 1927 阅读 · 0 评论 -
设备ip字符串操作
#include <iostream>#include <string>int main(){ std::string ipA = "192.168.11.200"; //find_last_of 字符串从后往前查找与关键字最近的值,输出该值所在的位置数 //本文从后往前最近的 “ . ”在第10的位置,pos = 10 auto const pos = ipA.find_last_of('.'); //substr 字符串从输入的起始.原创 2021-10-27 10:42:13 · 700 阅读 · 0 评论 -
函数传参写法
#include <iostream>bool test(int a, int &b) { b = a + 5; return true;}int main(){ int e = 20; int c = 15; test(e, c); std::cout << "c: " << c << std::endl; return 0;}b作为形参传入的同时也被当做了输出。.原创 2021-10-27 09:59:41 · 101 阅读 · 0 评论 -
tmux使用
nvidia启动节点tmux下面启动节点ws_livox的节点要在ws_livox下面source一下。其它的在ros——traffic——arm下面source一下tmux new –s 1创建一个名字为1的session在名为1的session下创建新的窗口ctrl +B 松开 再按c在名为1的session下切换窗口ctrl +B 松开再按1或者2, 按相应数字键,就可以切换到相应的窗口了ctrl + B 松开再按d 使tmux在后台运行,tmux原创 2021-09-27 11:42:25 · 76 阅读 · 0 评论 -
docker学习
在特定文件夹下创建一个dockerdocker run -d -i -t --name roy -v /home/program/GpsMapProcess:/GpsMapProcess 0321942368c0 /bin/bash/home/program/GpsMapProcess:/GpsMapProcess将本地目录映射到docker目录0321942368c0使用的镜像--name roydocker名字为roy...原创 2021-09-14 17:32:57 · 72 阅读 · 0 评论 -
动态库讲的不错
Linux 动态链接库(.so)的使用 - 旭东的博客 - 博客园原创 2021-09-14 09:11:11 · 71 阅读 · 0 评论 -
c++读取yaml文件
1. 安装yaml库安装yaml-cppyaml-cpp 是一个开源库,地址在 github 上,https://github.com/jbeder/yaml-cppyaml-cpp 默认构建的就是静态库,也就是 unix 类系统下的 .a 文件,如果你想构建动态库的话,就需要在 cmake 时指定。下载解压之后mkdir buildcd buildcmake -DYAML_BUILD_SHARED_LIBS=ON ..编译成功后,会生成库文件,你只需要将库文件和头文件拷贝到.原创 2021-09-14 08:47:56 · 9145 阅读 · 5 评论 -
c++调用.so库
1. g++进行编译并调用.so库目录/home/test_ws/src/文件1:test1.cpp#include <iostream>extern "C" void test(){ std::cout << "this is a test log" << std::endl;}文件2:main.cppextern "C" void test();int main(){ test();}g++ -std=c原创 2021-09-07 14:06:43 · 5536 阅读 · 0 评论 -
内网使用本机时间作为ntp服务端同步
首先下载ntpsudo apt install ntp修改配置文件sudo vim /etc/ntp.conf加粗的文字要注释掉# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for# more information.#pool 0.ubunt.原创 2021-09-05 22:46:20 · 485 阅读 · 0 评论 -
Livox 激光雷达时间同步
官方文档PTP没成功,用ptpd成功了,大致流程。ifconfig 查看网口 比如网口是 eno1ethtool -Teno1如果出现`hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)``hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)``hardware-recive (SOF_TIMESTAMPING_RX_HARDWARE)`说明可以进行硬件时间同步。sudo apt...原创 2021-09-02 16:21:18 · 5109 阅读 · 6 评论 -
虚函数的举例
父类和子类的同名同形参的函数,使用指针调用或者是直接调用,如果该函数在父类不是虚函数,那么无论那种方式调用,父类的同名函数都会覆盖子类。#include <iostream> using namespace std; class A { public: void print() { cout << "this is A" << endl; }};class B : ..原创 2021-09-01 09:26:00 · 318 阅读 · 1 评论 -
c++ 类学习
class 类名{ //访问修饰符有以下三个 public: //公共成员 protected: //保护成员 private: //私有成员 };原创 2021-08-31 10:21:04 · 71 阅读 · 0 评论 -
C++:alignas关键字的作用
https://www.jianshu.com/p/ce2e52719b4ahttps://blog.csdn.net/audi2/article/details/39103733原创 2021-08-30 15:17:13 · 306 阅读 · 0 评论 -
自定义命名空间的嵌套
举例创建一个包含学校信息的项目,以命名空间命名。框架如下1. 学校姓名:希望小学1.1 一年级一班1.1.1 小红1.1.2 小明1.1.3 小刚1.2一年级二班1.3一年级三班1.4一年级四班#include <iostream>#include <stdlib.h>namespace xiwangSchool{ void nameCout() { std::cout << "this...原创 2021-08-30 15:10:37 · 101 阅读 · 0 评论 -
ros bag包指定话题转pcd格式
rosrun pcl_ros bag_to_pcd 2019-01-25-04-01-39.bag /sensor/lidar16/left/pointcloud pcd2019-01-25-04-01-39.bag (bag包名字)/sensor/lidar16/left/pointcloud(话题)pcd(将bag包转成pcd的文件存在名为pcd的文件夹下)原创 2021-07-25 19:22:33 · 798 阅读 · 0 评论 -
C++安装库
这里以安装libLAS为例,去github下载文件https://github.com/libLAS/libLAS在该文件下输入以下指令mkdir buildcd buildcmake ..makesudo make install主要流程就是上面几步。测试是否安装成功参考以下链接https://blog.csdn.net/weixin_43779943/article/details/102639516...原创 2021-07-25 19:06:10 · 946 阅读 · 0 评论 -
c++请输入任意键继续
Windows系统用system("pause")linux用cin.get()这里需要注意,如果之前没有用过cin.get()只需要一个cin.get()就行,如果之前用过cin.get(),必须输入两边cin.get()才能有效果。如下方代码所示 cout << "请输入年龄: " << endl; int age = 0; cin >> age; abs->personArray[原创 2021-07-04 13:27:18 · 2489 阅读 · 0 评论 -
c++结构体在main函数中使用时需要初始化
结构体如下所示//联系人结构体struct Person{ string m_Name; //姓名 int m_Sex; //性别:1 男 2 女 int m_Age; //年龄 string m_Phone; //电话 string m_Addr; //地址};//通讯录结构体struct Addressbooks{ struct Person personArray[MAX]; //通讯录中保存的联系人数组 int m_Size.原创 2021-07-04 10:29:12 · 572 阅读 · 0 评论 -
Vscode tab键使用
代码前进4个格用tab代码后退4个格用shift + tab原创 2021-07-04 08:45:57 · 902 阅读 · 0 评论 -
maskrcnn-benchmark在Colab复现
官方安装要求:https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL.md首先需要安装miniconda%%bashMINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.shMINICONDA_PREFIX=/usr/localwget https://repo.continuum.io/miniconda/$MINICONDA_.原创 2021-06-02 14:45:53 · 342 阅读 · 0 评论 -
colab安装anaconda
%%bashMINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.shMINICONDA_PREFIX=/usr/localwget https://repo.continuum.io/miniconda/$MINICONDA_INSTALLER_SCRIPTchmod +x MINICONDAINSTALLERSCRIPT./MINICONDA_INSTALLER_SCRIPT./MINICONDAINSTALLERSCRIPT./原创 2021-06-01 10:41:19 · 2243 阅读 · 0 评论 -
ros sevice client 通信编程实现
1. 目标(1)实现自定义服务类型(2)server端节点编写(3)client端节点编写(4)实现两个整数求和,具体为client端节点向server端节点发送a和b的请求,server端节点返回响应sum=a+b给client端节点。通信结构如下图所示2. 操作步骤2.1 创建工作环境mkdir ~/catkin_ws/src/cd ~/catkin_ws/srccatkin_init_workspacecd ~/catkin_wscatkin_make.原创 2021-05-07 14:02:15 · 89 阅读 · 0 评论 -
argparse简单使用
主要有三个步骤:创建 ArgumentParser() 对象调用 add_argument() 方法添加参数使用 parse_args() 解析添加的参数#文件名ArgTest.pyimport argparse#创建ArgumentParser()对象parser = argparse.ArgumentParser(description="usr information")#调用add_argument() 方法添加参数parser.add_argument("--nam.原创 2021-05-06 19:09:14 · 490 阅读 · 0 评论 -
c++ 函数笔记
1. 函数的形参,实参#include <iostream>using namespace std;int add(int a, int b); //a, b为形参int main (){ int c = 10; //c,d 为实参 int d = 20; int e = add(c,d); cout << "e:" << e << endl; return 0;}int add(int a.原创 2021-04-26 20:39:30 · 187 阅读 · 0 评论 -
cmake快速编译可执行文件
cmake_minimum_required(VERSION 3.0)project(test)add_executable(test test.c)原创 2021-04-26 20:14:57 · 178 阅读 · 0 评论 -
ros话题订阅成功,但是callback不触发
如上图所示,加上判断语句之后,虽然话题订阅成功但是不触发callback。解决方法,把ros::Subscriber sub_sensor1_等写在.h文件中,在该图呈现的效果为原创 2021-02-03 17:43:36 · 2691 阅读 · 0 评论 -
学习笔记:指针理解(二)关键字new的使用
使用关键字new请求正确数量的内存以及使用指针来跟踪新分配的内存的位置。*运算符被成为解除引用运算符,将其应用于指针,可以得到该地址处存储的值。#include <iostream>using namespace std;int main(){ int a = 1001; int* pt = new int; *pt = 1001; cout << "a value = " << a << endl;原创 2020-12-14 16:26:02 · 533 阅读 · 0 评论 -
学习笔记:指针的理解
#include <iostream>using namespace std;int main(){ int a = 6; int *p = &a; cout << "整型变量a的值为整型的值:" << a << endl; cout << "整型指针变量p的值为整型的值的地址:" << p << endl; cout << "a取其地址为" << &.原创 2020-12-14 10:58:24 · 88 阅读 · 1 评论 -
vector中iterator的使用
int main(){vector<int>::iterator iter1;vector<int>::iterator iter2;int A[] = {1,2,3,4,5,6,7,8,9};vector<int> a(A,A+9); //表示将数组的9个值加到vector中iter1 = a.begin();iter2 = a.begin()-1;cout << *iter1 << endl;cout <&.原创 2020-11-30 11:45:01 · 1470 阅读 · 2 评论 -
map和函数指针绑定操作
最近需要对接收到的时间戳做一个排序,并把时间戳下面对应的数据push_back进autoware_msg中,于是 利用map的自动排序功能将时间戳从小到大进行排序,然后对应的时间戳后面接一个函数指针,用来按照从小到大的顺序push_back数据到autoware_msg中。#include <map>#include<iostream>using namespace std;int main(){ typedef void(*fuc)(); v.原创 2020-11-27 11:01:43 · 550 阅读 · 0 评论 -
Vscode 文件中 查找替换 局部查找 替换快捷键
https://www.cnblogs.com/jiqing9006/p/13300817.html原创 2020-11-26 15:44:55 · 2874 阅读 · 1 评论 -
autoware 数据传输
const autoware_msgs::DetectedObjectArray &lidar_msg,for (size_t i = 0; i < lidar_msg.objects.size(); i++){fusion_result.objects.push_back(lidar_msg.objects[i]); //}原创 2020-11-26 10:09:10 · 767 阅读 · 0 评论