ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. traffic_light
    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 4
    • Best 0
    • Controversial 0
    • Groups 0

    traffic_light

    @traffic_light

    0
    Reputation
    5
    Profile views
    4
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    traffic_light Unfollow Follow

    Latest posts made by traffic_light

    • RE: voxl-io & I2C

      @modaltb my current cmake without the addition you mentioned:

      cmake_minimum_required(VERSION 2.8.3)
      project(powermodule)
      
      ## Compile as C++11, supported in ROS Kinetic and newer
      add_compile_options(-std=c++11)
      
      ## Find catkin macros and libraries
      ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
      ## is used, also find other catkin packages
      find_package(catkin REQUIRED COMPONENTS
        roscpp
        std_msgs
      )
      
      ## System dependencies are found with CMake's conventions
      # find_package(Boost REQUIRED COMPONENTS system)
      
      
      ## Uncomment this if the package has a setup.py. This macro ensures
      ## modules and global scripts declared therein get installed
      ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
      # catkin_python_setup()
      
      ################################################
      ## Declare ROS messages, services and actions ##
      ################################################
      
      ## To declare and build messages, services or actions from within this
      ## package, follow these steps:
      ## * Let MSG_DEP_SET be the set of packages whose message types you use in
      ##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
      ## * In the file package.xml:
      ##   * add a build_depend tag for "message_generation"
      ##   * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
      ##   * If MSG_DEP_SET isn't empty the following dependency has been pulled in
      ##     but can be declared for certainty nonetheless:
      ##     * add a exec_depend tag for "message_runtime"
      ## * In this file (CMakeLists.txt):
      ##   * add "message_generation" and every package in MSG_DEP_SET to
      ##     find_package(catkin REQUIRED COMPONENTS ...)
      ##   * add "message_runtime" and every package in MSG_DEP_SET to
      ##     catkin_package(CATKIN_DEPENDS ...)
      ##   * uncomment the add_*_files sections below as needed
      ##     and list every .msg/.srv/.action file to be processed
      ##   * uncomment the generate_messages entry below
      ##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
      
      ## Generate messages in the 'msg' folder
      # add_message_files(
      #   FILES
      #   Message1.msg
      #   Message2.msg
      # )
      
      ## Generate services in the 'srv' folder
      # add_service_files(
      #   FILES
      #   Service1.srv
      #   Service2.srv
      # )
      
      ## Generate actions in the 'action' folder
      # add_action_files(
      #   FILES
      #   Action1.action
      #   Action2.action
      # )
      
      ## Generate added messages and services with any dependencies listed here
      # generate_messages(
      #   DEPENDENCIES
      #   std_msgs
      # )
      
      ################################################
      ## Declare ROS dynamic reconfigure parameters ##
      ################################################
      
      ## To declare and build dynamic reconfigure parameters within this
      ## package, follow these steps:
      ## * In the file package.xml:
      ##   * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
      ## * In this file (CMakeLists.txt):
      ##   * add "dynamic_reconfigure" to
      ##     find_package(catkin REQUIRED COMPONENTS ...)
      ##   * uncomment the "generate_dynamic_reconfigure_options" section below
      ##     and list every .cfg file to be processed
      
      ## Generate dynamic reconfigure parameters in the 'cfg' folder
      # generate_dynamic_reconfigure_options(
      #   cfg/DynReconf1.cfg
      #   cfg/DynReconf2.cfg
      # )
      
      ###################################
      ## catkin specific configuration ##
      ###################################
      ## The catkin_package macro generates cmake config files for your package
      ## Declare things to be passed to dependent projects
      ## INCLUDE_DIRS: uncomment this if your package contains header files
      ## LIBRARIES: libraries you create in this project that dependent projects also need
      ## CATKIN_DEPENDS: catkin_packages dependent projects also need
      ## DEPENDS: system dependencies of this project that dependent projects also need
      catkin_package(
        #INCLUDE_DIRS ../../include
        #LIBRARIES powermdole
        #CATKIN_DEPENDS roscpp std_msgs
        #DEPENDS system_lib
      )
      
      ###########
      ## Build ##
      ###########
      # DOESN'T WORK:
      #FASTRPC_STUB_GEN(../../include/io_rpc.idl)
      
      ## Specify additional locations of header files
      ## Your package locations should be listed before other locations
      include_directories(
      # include
      	${catkin_INCLUDE_DIRS}
      	include
      	./include
      	/usr/local/include
      	/usr/include
      	../../include/
      )
      
      link_directories(
      	../../include
      	/include
      	include
      	/usr/local/lib
      	/usr/lib
      )
      
      ## Declare a C++ library
      add_library(${PROJECT_NAME}
         src/${PROJECT_NAME}.cpp
      )
      
      ## Add cmake target dependencies of the library
      ## as an example, code may need to be generated before libraries
      ## either from message generation or dynamic reconfigure
      # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
      
      ## Declare a C++ executable
      ## With catkin_make all packages are built within a single CMake context
      ## The recommended prefix ensures that target names across packages don't collide
      #add_executable (voxl_i2c  ../../include/voxl-i2c.c)
      #target_link_libraries (voxl_i2c  /usr/lib/voxl_io)
      
      add_executable(${PROJECT_NAME}_node 
         src/main.cpp
         src/powermodule.cpp
         ../../include/colorprinting.cpp
      )
      
      ## Rename C++ executable without prefix
      ## The above recommended prefix causes long target names, the following renames the
      ## target back to the shorter version for ease of user use
      ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
      # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
      
      ## Add cmake target dependencies of the executable
      ## same as for the library above
      #add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
      
      
      ## Specify libraries to link a library or executable target against
      target_link_libraries(${PROJECT_NAME}_node
      ${catkin_LIBRARIES}
      /usr/local/lib/
      # /usr/lib/aarch64-linux-gnu/libi2c.so
      #/usr/lib/rfsa/adsp/libio_rpc.so
      #/usr/lib/rfsa/adsp/libio_rpc_skel.so
      #/usr/lib/libvoxl_io.so
      #/usr/lib/libvoxl_io
      )
      
      #############
      ## Install ##
      #############
      
      # all install targets should use catkin DESTINATION variables
      # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
      
      ## Mark executable scripts (Python etc.) for installation
      ## in contrast to setup.py, you can choose the destination
      # install(PROGRAMS
      #   scripts/my_python_script
      #   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
      # )
      
      ## Mark executables for installation
      ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
      # install(TARGETS ${PROJECT_NAME}_node
      #   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
      # )
      
      ## Mark libraries for installation
      ## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
      # install(TARGETS ${PROJECT_NAME}
      #   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
      #   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
      #   RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
      # )
      
      ## Mark cpp header files for installation
      # install(DIRECTORY include/${PROJECT_NAME}/
      #   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
      #   FILES_MATCHING PATTERN "*.h"
      #   PATTERN ".svn" EXCLUDE
      # )
      
      ## Mark other files for installation (e.g. launch and bag files, etc.)
      # install(FILES
      #   # myfile1
      #   # myfile2
      #   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
      # )
      
      
      #############
      ## Testing ##
      #############
      
      ## Add gtest based cpp test target and link libraries
      # catkin_add_gtest(${PROJECT_NAME}-test test/test_shutdown.cpp)
      # if(TARGET ${PROJECT_NAME}-test)
      #   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
      # endif()
      
      ## Add folders to be run by python nosetests
      # catkin_add_nosetests(test)
      

      I think I need to figure out how I can add the IO correctly inside it.
      I'll post a new makefile when I did that.

      posted in VOXL Flight
      T
      traffic_light
    • RE: voxl-io & I2C

      @traffic_light (So, the makefile is a catkin makefile. A little bit different then a normal cmakelist files)

      posted in VOXL Flight
      T
      traffic_light
    • RE: voxl-io & I2C

      Hello @modaltb ,

      Thank you for your (really fast) answer!

      I'm building it with catkin_make inside the docker image.
      Maybe I need to mount more files into the docker image?
      Currently I added some header and cpp files to the include folder inside the project.

      I'm currently not at work, it's 20:40 over here, so I can't send the makefile.
      I'll tryout your suggestion the first thing tomorrow.

      By the way: I'm sorry for posting it, atleast that's what it think, in the wrong forum part. Developing software forum was a better option 😉

      posted in VOXL Flight
      T
      traffic_light
    • voxl-io & I2C

      Hello everyone,

      Currently I'm developing some software that will talk, over I2C, to a self-build powermodule with a microcontroller onboard.
      This software is a node for ros and runs in a docker.
      When it received the batterypercentage from PX4 it will start sending and receiving data to the powermodule.
      The part that receives the batterypercentage works great.

      The only problem is that I receive a linker error when I'm building the software with the I2C commands

      Error's:

      CMakeFiles/powermodule_node.dir/src/powermodule.cpp.o: In function `PowerModule::OpenI2CDevice()':
      powermodule.cpp:(.text+0xbc): undefined reference to `voxl_i2c_slave_config'
      powermodule.cpp:(.text+0xd0): undefined reference to `voxl_i2c_init'
      collect2: error: ld returned 1 exit status
      powermodule/CMakeFiles/powermodule_node.dir/build.make:165: recipe for target '/root/yoctohome/peter-dev/control/devel/lib/powermodule/powermodule_node' failed
      make[2]: *** [/root/yoctohome/peter-dev/control/devel/lib/powermodule/powermodule_node] Error 1
      CMakeFiles/Makefile2:1551: recipe for target 'powermodule/CMakeFiles/powermodule_node.dir/all' failed
      make[1]: *** [powermodule/CMakeFiles/powermodule_node.dir/all] Error 2
      Makefile:138: recipe for target 'all' failed
      make: *** [all] Error 2
      Invoking "make -j4 -l4" failed
      
      

      I already tried a lot of option.
      Some options i already did:

      • Include a lot of header and cpp files into the includes folder
      • Building the voxl_io in a docker on my pc and move the ipk to the voxl

      The hardware is a voxl_flight and I'm using the I2C port 6 (located on the J7 header)

      I don't know what to do for now so I'm searching for help. I can't find anything that helps me with my solution and the docs of modalai doesn't have a lot of information about I2C usage.

      Here a part of the code that's opening the i2c:

      int8_t PowerModule::OpenI2CDevice()
      {
          if (I2C_is_open_)
          {
              // I2C bus is already opened. Return -2
              return -2;
          }
      
          if (voxl_i2c_slave_config(I2C_bus_id_, I2C_address_, 400000, 1000) == 0)
          {
              //return -3;
          }
      
          int8_t response{0};
          response = voxl_i2c_init(I2C_bus_id_);
      
          if (response == 0)
          {
              I2C_is_open_ = true;
          }
      
          return response;
      }
      

      Thanks in advance!

      (I'm sorry for my English 😉 )

      posted in VOXL Flight
      T
      traffic_light