📋

micro-ROSでerror: no match for 'operator[]'と言われた

2022/05/27に公開

はじめに

  • teensy with micro-ROSをやっていて、joystickの/joyをteensy側でsubscribeしてラジコンみたいなのを作りたかった。
  • 超絶初心者なので何も考えずにROSの方法で記述しているとエラーを吐いた。
  • error: no match for 'operator[]' (operand types are 'const rosidl_runtime_c__int32__Sequence' and 'int')

問題・解決

void motor_callback(const void * msgin)
{
  const sensor_msgs__msg__Joy * msg = (const sensor_msgs__msg__Joy *)msgin;
  
 // 正しい方法
  if((msg->buttons.data[1])== 1){
    motor_flag = 0;
    }
  if((msg->buttons.data[2])== 1){
    motor_flag = 1;
    }
  pwmcmd = 2000*( msg->axes.data[1]) + 1010;
  
// エラーでる方法  
//  if((msg->buttons[1])== 1){
//    motor_flag = 0;
//    }
//  if((msg->buttons[2])== 1){
//    motor_flag = 1;
//    }
//  pwmcmd = 2000*( msg->axes[1]) + 1010;
}

Discussion