Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    1. Home
    2. weijiz
    3. Posts
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision
    • Profile
    • Following 0
    • Followers 11
    • Topics 248
    • Posts 705
    • Best 11
    • Groups 1

    Posts made by weijiz

    • RE: Hikey 970 USB转串口驱动安装

      @robutun 这个我没有遇到过,不太清楚

      posted in 技术交流
      weijiz
      weijiz
    • 伽利略导航SDK发布

      2019.3.30

      伽利略导航系统是一款用于机器人定位与导航的超高性价比的模块化的解决方案。它采用多种传感器融合定位,具有精度高,稳定性好 的特点。和传统的定位方式相比,伽利略导航系统不需要用户铺设轨道,完全图形化的人机交互界面,使用方便,维护成本低。

      为了方便客户使用和开发相关的导航功能,我们发布了伽利略导航SDK。通过伽利略导航SDK用户可以在没有ROS基础的情况下使用伽利略导航系统。使用方法简单快捷,同时我们也配套了详细的文档说明,进一步降低开发难度。

      伽利略导航系统SDK的相关文档可以查看这里

      posted in 蓝鲸智能大事记
      weijiz
      weijiz
    • RE: Hikey 970 USB转串口驱动安装

      @robutun 我更新了这篇文章,现在应该可以了。

      posted in 技术交流
      weijiz
      weijiz
    • RE: Hikey 970 USB转串口驱动安装

      @robutun 在 Hikey 970 USB转串口驱动安装 中说:

      行到安装驱动module发现缺少depmod依赖文件

      我又试了下确实有问题。估计是内核更新了。现在驱动没办法做成ko文件了。

      posted in 技术交流
      weijiz
      weijiz
    • 如何恢复小强中被修改的软件包

      在使用小强的过程中可能会对小强中的相关软件进行修改。很容易出现修改后小强不能正常工作的情况。下面介绍如何恢复小强的相关软件。

      小强的相关软件都是通过git进行代码管理的。任何对代码的更改都是有迹可循的,也是可以恢复的。下面以startup软件包为例进行说明。

      假设我们修改了小强的startup软件包,导致有些启动项没有正常运行。如何查看我们做了哪些修改呢?可以通过下面的指令

      # 进入startup 软件包所在目录
      roscd startup 
      # 查看我们进行了哪些修改
      git diff
      

      如果有修改我们可以看到下面的输出

      9f2d8e67-b387-4e76-bfc4-742882e3b532-image.png

      从这里我们可以看出usb_cam包的launch文件被注释掉了。这样小强就不会开机自动启动摄像头了。

      如果我们想要恢复到原来的文件状态,可以执行下面的指令。

      # 进入startup 软件包
      roscd startup
      # 撤销所有更改
      git stash
      

      e3ef94be-4346-4494-a5f8-c9a1e47e9c11-image.png

      可以看到刚才的更改已经被撤销了。

      如果你不习惯使用命令行进行操作,我们也可以使用vscode进行操作。

      通过vscode打开startup软件包。

      aa953499-ea1b-4914-8295-fc436a92f40f-image.png

      点击左侧第三个按钮,进入代码管理界面

      13e5f596-d55a-48b4-b41f-1b1d5031f947-image.png

      可以看到这里列出了startup.launch文件被修改
      想要查看修改内容,只需要点击对应的文件即可。

      90617118-652e-4399-918c-c386081b9781-image.png

      可以看到usb_cam那一行被标记修改过了。

      如果想要撤销修改可以右键单击文件,在弹出的菜单中选择撤销更改。
      5a04493b-8d32-4b6c-a35d-9c9d686fa908-image.png

      以上是代码的恢复。但是仅恢复代码有时小强还是无法正常工作。对于startup软件包来说,要需要重新注册启动项后,更改才能生效。对于启动项的注册可以查看小强用户手册。

      对于需要编译的代码,代码需要在重新编译后才会生效。比如xqserial_server在进行更改后需要

      # 进入小强工作空间
      cd ~/Documents/ros
      # 编译xqserial_server软件包
      catkin_make -DCATKIN_WHITELIST_PACKAGES="xqserial_server"
      

      编译成功后sudo service startup restart这样更改才能生效。

      对于进行了很多修改,而以上恢复办法仍无法让小强正常工作时,那只能用重装系统大法了

      posted in 产品服务
      weijiz
      weijiz
    • RE: 如何移植ROS程序到Android

      @gongyue666 可以参考这里

      posted in 技术交流
      weijiz
      weijiz
    • C++在使用C库时malloc和new导致的错误

      在用C++编程的时候对于Linux的系统相关操作,比如socket的处理。经常要调用系统的程序库。Linux系统的库主要用c编写。一般情况下C++使用起来并没有什么问题。但是也有一些需要注意的地方。

      在使用C的库时开辟内存要用malloc,一般C++程序用new。比如下面就是我遇到的一个例子

      #ifdef WIN32
              send(sockfd, request.c_str(), request.size(), 0);
      #else
              write(sockfd, request.c_str(), request.size());
      #endif
              char *buf = (char *)malloc(1024 * 1024);
              int offset = 0;
              int rc;
      #ifdef WIN32
              while ((rc = recv(sockfd, buf + offset, 1024, 0)))
      #else
              while ((rc = read(sockfd, buf + offset, 1024)))
      #endif
              {
                  offset += rc;
              }
      #ifdef WIN32
              closesocket(sockfd);
      #else
              close(sockfd);
      #endif
              buf[offset] = 0;
              std::string res = std::string(buf);
              auto find_res = res.find("\r\n\r\n");
              auto body = res.substr(res.find("\r\n\r\n") + 4, res.size());
              free(buf);
      

      这里的buf如果用 char *buf = new char[1024 * 1024]定义buf,然后用 delete[] buf去释放内存。编译时并不会有问题,但是在Linux上运行时会出segment fault错误。在Windows上运行是正常的。
      用上面的方式定义buf和回收buf就没有问题。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 如何移植ROS程序到Android

      @gongyue666 是不是环境变量没有设置好。比如NDK_ROOT路径不对。 可以发一下完整的错误。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 使用xiaoqiang_track进行人体跟随和追踪

      @huapiaoxiang21 首先要确保成功编译了消息文件。看看在devel/lib/python2.7/dist-packages/xiaoqiang_track/msg文件夹是否有对应文件。然后要确保环境变量是对的。有没有source工作空间的setup.bash。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 如何移植ROS程序到Android

      @gongyue666 可以参照这个教程。
      简单说就是利用java的工具生成c++的头文件,然后把自己的方法添加到对应的实现里面。
      这是我自己移植程序的 jni wrapper

      posted in 技术交流
      weijiz
      weijiz
    • RE: 小强无法远程rviz

      @roy6669049 插上hdmi转vga的转接头试试。推荐使用vnc。

      posted in 技术交流
      weijiz
      weijiz
    • 如何移植ROS程序到Android

      在Android上运行ROS程序一般使用rosjava-android。但是也可以直接利用NDK编译成so文件移植到Android上。当然移植过程也并不简单。 下面是一个简单的例子。

      安装cmake(>3.14)

      新版本的cmake增加了对Android cross compile的支持,所以我们要安装新版本的cmake。

      wget -q https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4.tar.gz
      tar -xzf cmake-3.14.0-rc4.tar.gz
      cd cmake-3.14.0-rc4/
      env CC=$(which clang) CXX=$(which clang++) ./bootstrap --prefix=/usr --parallel=4
      make
      sudo make install
      cd ..
      

      安装clang

      新版本的NDK默认使用clang进行编译。所以我们需要安装clang。clang的安装方式可以参照这里

      安装NDK

      wget -q https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
      unzip -qq android-ndk-r18b-linux-x86_64.zip
      export NDK_ROOT=$(pwd)/android-ndk-r18b
      

      设置cmake toolchain

      git clone https://github.com/BluewhaleRobot/rostoolchain
      export TOOLCHAIN_ROOT=$(pwd)/rostoolchain
      

      安装Boost-android

      git clone https://github.com/moritz-wundke/Boost-for-Android
      mkdir boost_libs
      cd Boost-for-Android
      ./build-android.sh --boost=1.68.0 --prefix=$(pwd)/../boost_libs $NDK_ROOT
      cd ..
      #set up boost
      export INSTALL_PREFIX=/opt/ros/arm
      sudo mkdir -p $INSTALL_PREFIX/include
      sudo mkdir -p $INSTALL_PREFIX/lib
      sudo cp -rf boost_libs/armeabi-v7a/include/boost-1_68/boost $INSTALL_PREFIX/include/
      sudo cp boost_libs/armeabi-v7a/lib/*.a $INSTALL_PREFIX/lib/
      

      设置ROS workspace

      mkdir -p arm/src
      cd arm/src
      git clone https://github.com/ros/catkin --depth=1
      git clone https://github.com/ros/common_msgs --depth=1
      git clone https://github.com/ros/gencpp --depth=1
      git clone https://github.com/jsk-ros-pkg/geneus --depth=1
      git clone https://github.com/ros/genlisp --depth=1
      git clone https://github.com/ros/genmsg --depth=1
      git clone https://github.com/RethinkRobotics-opensource/gennodejs --depth=1
      git clone https://github.com/ros/genpy --depth=1
      git clone https://github.com/ros/message_generation --depth=1
      git clone https://github.com/ros/message_runtime --depth=1
      git clone https://github.com/BluewhaleRobot/ros_comm --depth=1
      git clone https://github.com/ros/ros_comm_msgs --depth=1
      git clone https://github.com/BluewhaleRobot/rosconsole --depth=1
      git clone https://github.com/BluewhaleRobot/roscpp_core --depth=1
      git clone https://github.com/ros/std_msgs --depth=1
      

      编译工作空间

      cd ..
      ./src/catkin/bin/catkin_make -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN_ROOT/toolchain-arm.cmake -DCATKIN_WHITELIST_PACKAGES="" -DBUILD_SHARED_LIBS=OFF
      sudo cp -rf devel/lib/*.a $INSTALL_PREFIX/lib/
      sudo cp -rf devel/lib/pkgconfig $INSTALL_PREFIX/lib/
      export PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig
      

      编译你自己的代码

      现在把你的代码放置到此工作空间内,然后像之前编译工作空间一样。

      ./src/catkin/bin/catkin_make -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN_ROOT/toolchain-arm.cmake -DCATKIN_WHITELIST_PACKAGES="" -DBUILD_SHARED_LIBS=OFF
      

      编译出so文件或.a文件之后,利用JNI写一个包装程序,然后通过java调用。这样就可以在Android app里面使用了。

      posted in 技术交流
      weijiz
      weijiz
    • 如何利用cmake移植程序到Android

      很多c++和c程序都使用cmake去管理程序依赖和编译程序。新版本的cmake已经支持 cross compile 程序到android平台。我们可以利用ndk和cmake很方便的移植程序。下面是一个移植的例子。

      安装clang

      因为新版本的ndk已经默认使用clang进行编译了

      安装方式参照这里

      安装新版本的cmake(>3.14)

      wget -q https://github.com/Kitware/CMake/releases/download/v3.14.0-rc4/cmake-3.14.0-rc4.tar.gz
      tar -xzf cmake-3.14.0-rc4.tar.gz
      cd cmake-3.14.0-rc4/
      env CC=$(which clang) CXX=$(which clang++) ./bootstrap --prefix=/usr --parallel=4
      make
      sudo make install
      

      下载NDK

      cd ..
      wget -q https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
      unzip -qq android-ndk-r18b-linux-x86_64.zip
      export NDK_ROOT=$(pwd)/android-ndk-r18b
      

      创建toolchain文件

      toolchain文件是cmake用来设置编译工具链的文件。配置好此文件就可以让cmake cross compile android 程序了。

      toolchain.cmake文件内容如下

      # 设置编译Android
      set(CMAKE_SYSTEM_NAME Android)
      # 设置Android NDK 路径
      set(CMAKE_ANDROID_NDK $ENV{NDK_ROOT})
      # 设置 Android ABI
      set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
      # 设置target api版本
      set(CMAKE_SYSTEM_VERSION 19)
      # 设置cmake寻找路径,自己随便创建一个文件夹, 依赖的相关库文件也要放在这里
      set(CMAKE_FIND_ROOT_PATH /opt/arm)
      
      # 设置cmake搜寻文件的方式,防止使用系统中的其他不相干文件
      set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
      set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
      set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
      

      编译自己的程序

      和正常编译方式差别不大,只要加上toolchain参数就可以了

      mkdir build
      cd build
      cmake -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN_ROOT/toolchain.cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX  ..
      

      TOOLCHAIN_ROOT是你的toolchain文件路径, INSTALL_PREFIX是之前设置的CMAKE_FIND_ROOT_PATH。这样就可以cross compile Android程序了。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 使用python代码启动launch文件

      @几何木偶 你的代码是什么样的,像我之前的例子那样写应该会正常退出。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 使用xiaoqiang_track进行人体跟随和追踪

      @robot0612 检查你的devel/include文件夹内是否有body_pose/Body_Pose.h

      posted in 技术交流
      weijiz
      weijiz
    • RE: 在小强上使用body_pose进行人体识别

      @robot0612 里面的一个依赖库新版本不支持python2.7了。需要下载旧版本

      pip install munkres==1.0.12
      
      posted in 技术交流
      weijiz
      weijiz
    • RE: 在小强上使用body_pose进行人体识别

      @robot0612 感觉你的python环境可能有问题,错误的代码语法是python3的,但是却出现在python2.7的路径里面

      posted in 技术交流
      weijiz
      weijiz
    • RE: 使用xiaoqiang_track进行人体跟随和追踪

      @robot0612 这个是由于body pose软件包没有安装好

      posted in 技术交流
      weijiz
      weijiz
    • RE: 使用xiaoqiang_track进行人体跟随和追踪

      @robot0612 你的编译过程是什么样的。这个头文件是一个msg,正常catkin会自动生成。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 在小强上使用body_pose进行人体识别

      @robot0612 是不是模型没有下载完整,重新执行下载模型的指令试试

      posted in 技术交流
      weijiz
      weijiz
    • 1
    • 2
    • 17
    • 18
    • 19
    • 20
    • 21
    • 35
    • 36
    • 19 / 36